The continued development of computing devices, such as personal computers (“PCs”) and global communication networks, such as the Internet, provides a computer user a number of advantages. In common Internet environment, a computer user, through a user computing device, requests specific content from content-providing computing devices, such as server computing devices, connected to the Internet. As the content-providing computing devices transmit the data, the user computing device generates pages of graphical and textual data that can be displayed to the individual computer user. This embodiment is generally referred to as the World Wide Web (“WWW” or “Web”).
In some embodiments, a single service provider can support several content-providing devices that are organized by a topic that each device provides. For example, the single service provider may provide content-providing computing devices that provide weather information, financial information, electronic communication, chat room hosting, sports information and the like. Accordingly, a user request for information from the service provider will be directed to and serviced by a specific content-providing computing device. Accordingly, the user experience can be measured in terms of the specific computing device's ability to process the user request in an efficient and complete manner.
To facilitate a better user experience, many content-providing computing devices attempt to customize at least a portion of the data returned to the computer user. In a typical embodiment, the user request can include some identification information, such as a user identifier or user demographic information, that allows the content-providing computing device to modify the content for a particular user. For example, user demographic information indicating a zip code for a user allows the content-providing computing device to modify content for the particular geographic area of the user. Likewise, a travel-based content provider may be able to modify content to include previous trip information, user travel preferences or financial information for purchases corresponding to a particular identifiable user.
Although the content-providing computing device can maintain some or all of the user information for customizing content, this approach quickly becomes inefficient for a larger number of user requests. For example, one typical implementation, a service provider may utilize a number of content-providing computing devices to server user computer requests. Accordingly, in some embodiments, several content-providing computing devices can share a common set of data that is typically stored in one or more databases. In accordance with one embodiment utilizing a common set of data, each individual content-providing device can access the data directly from the databases. However, as the amount of data stored in the database increases, database access time increases. Accordingly, the overall performance of the content-providing computing device decreases.
One attempt to improve data access times includes the use of one or more data servers optimized to retrieve requested data from the large database banks. In accordance with this embodiment, each content-providing computing device becomes a client of a data server and requests the data from the data server. For ease of explanation, the content-providing computing devices that request data from data servers will be referred to as “clients” or “client computing devices.” In some instances, the data server can maintain the data locally and the response time is greatly improved. In other instances, the data server may have to access the database. However, the group of data servers may be configured so that each data server can retrieve a portion of the data much faster. Accordingly, a particular client request, including some type of identification information, can be directed to an appropriate data server.
Although the utilization of a data server configuration can improve data access times, current data server and client configurations can become inefficient in processing repeated user requests. In the typical data server and client configuration, the client issues a communication request to open a communication channel with the data server. In turn, the data server acknowledges the communication channel request. Upon completion of the data transfer, the client issues a request to terminate the communication channel. Accordingly, each data request includes three additional transactions to coordinate communication channels. As the number of data requests between a client and a data server increases, the three additional transactions utilize system resources and decrease system performance.
To mitigate the number of additional transactions, the data server can allow the client to make the communication channel persistent such that subsequent data requests can be transferred over the persistent communication channel without requiring the three additional transactions. The maintenance of persistent communication channels can be referred to as communication channel caching. Although communication channel caching can improve system performance, current caching embodiments can become deficient in managing how many communication channels are cached. More specifically, often a data server can service any number of clients that can have varying data request loads. For example, a chat room client may have a lower request load during the morning than in the afternoon. Likewise, another client may wish to pay higher service costs to achieve better performance in terms of more allowed cached connections.
Current data server caching systems are typically limited to providing each client with a fixed number of cached communication channels, even if they are not being utilized at that time. Accordingly, the data server may have to maintain cached communication channels with a client, even if the communication channel isn't being utilized. Likewise, certain clients may experience severe performance degradation during limited times, such as during a peak usage span, that could be greatly improved with more cached connections. In both above-referenced examples, a fixed number of allowed cached communication channels may be inefficient for certain situations.
Accordingly, based on the above-described deficiencies associated with the prior art, there is a need for a system and method for managing communication channels allocations.